package cn.thinkluck.pattern.memento;

import lombok.extern.slf4j.Slf4j;

/**
 * 备忘录模式
 *
 * @Author liutao
 * @DateTime 2024/8/4 下午3:37
 */
@Slf4j
public class Main {
    public static void main(String[] args) {
        //需要被备份的对象
        Originator originator = new Originator();
        originator.setState(1);
        log.info("初始值{}", originator.getState());
        //创建备份
        Memento memento1 = originator.createMemento();
        originator.setState(2);
        log.info("改变后值{}", originator.getState());
        //创建备份
        Memento memento2 = originator.createMemento();
        //创建管理备忘录的
        Caretaker caretaker = new Caretaker();
        //将备份添加进去
        caretaker.addMemento(memento1);
        caretaker.addMemento(memento2);
        //恢复备忘录的第一版本
        originator.restoreMemento(caretaker.getMemento(0));
        log.info("恢复第一版备份{}", originator.getState());
        //恢复备忘录的第二版本
        originator.restoreMemento(caretaker.getMemento(1));
        log.info("恢复第二版备份{}", originator.getState());
        //恢复备忘录的第一版本
        originator.restoreMemento(caretaker.getMemento(0));
        log.info("恢复第一版备份{}", originator.getState());
    }
}
